#!/usr/bin/env node
/**
 * 创建菜单相关的数据表（menu_categories, menu_items）
 */

const { pool, query: dbQuery } = require('../src/config/database');

const CREATE_MENU_CATEGORIES_TABLE = `
CREATE TABLE IF NOT EXISTS menu_categories (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL COMMENT '分类名称（中文）',
  name_en VARCHAR(100) DEFAULT NULL COMMENT '分类名称（英文）',
  description TEXT DEFAULT NULL COMMENT '分类描述（中文）',
  description_en TEXT DEFAULT NULL COMMENT '分类描述（英文）',
  icon VARCHAR(255) DEFAULT NULL COMMENT '分类图标',
  color VARCHAR(20) DEFAULT NULL COMMENT '分类颜色',
  is_active BOOLEAN DEFAULT TRUE COMMENT '是否激活',
  sort_order INT DEFAULT 0 COMMENT '排序顺序',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  deleted_at TIMESTAMP NULL DEFAULT NULL,
  
  INDEX idx_active_sort (is_active, sort_order),
  INDEX idx_deleted (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单分类表';
`;

const CREATE_MENU_ITEMS_TABLE = `
CREATE TABLE IF NOT EXISTS menu_items (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100) NOT NULL COMMENT '菜品名称（中文）',
  name_en VARCHAR(100) DEFAULT NULL COMMENT '菜品名称（英文）',
  description TEXT DEFAULT NULL COMMENT '菜品描述（中文）',
  description_en TEXT DEFAULT NULL COMMENT '菜品描述（英文）',
  price DECIMAL(10,2) NOT NULL COMMENT '价格',
  category_id INT NOT NULL COMMENT '分类ID',
  image_url VARCHAR(500) DEFAULT NULL COMMENT '图片URL',
  is_available BOOLEAN DEFAULT TRUE COMMENT '是否可用',
  is_featured BOOLEAN DEFAULT FALSE COMMENT '是否特色推荐',
  preparation_time INT DEFAULT NULL COMMENT '制作时间（分钟）',
  calories INT DEFAULT NULL COMMENT '卡路里',
  spice_level TINYINT DEFAULT 0 COMMENT '辣度等级（0-5）',
  allergens JSON DEFAULT NULL COMMENT '过敏原信息',
  ingredients JSON DEFAULT NULL COMMENT '配料信息',
  nutritional_info JSON DEFAULT NULL COMMENT '营养信息',
  tags JSON DEFAULT NULL COMMENT '标签',
  sort_order INT DEFAULT 0 COMMENT '排序顺序',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  deleted_at TIMESTAMP NULL DEFAULT NULL,
  
  FOREIGN KEY (category_id) REFERENCES menu_categories(id),
  INDEX idx_category (category_id),
  INDEX idx_available (is_available),
  INDEX idx_featured (is_featured),
  INDEX idx_price (price),
  INDEX idx_sort (sort_order),
  INDEX idx_deleted (deleted_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='菜单项表';
`;

async function createMenuTables() {
  try {
    console.log('🔧 开始创建菜单表...');
    
    // 创建菜单分类表
    console.log('创建 menu_categories 表...');
    await dbQuery(CREATE_MENU_CATEGORIES_TABLE);
    console.log('✅ menu_categories 表创建成功');
    
    // 创建菜单项表
    console.log('创建 menu_items 表...');
    await dbQuery(CREATE_MENU_ITEMS_TABLE);
    console.log('✅ menu_items 表创建成功');
    
    console.log('🎉 所有菜单表创建完成');
  } catch (error) {
    console.error('❌ 创建菜单表失败:', error.message);
    throw error;
  }
}

async function main() {
  try {
    await createMenuTables();
    process.exit(0);
  } catch (error) {
    console.error('脚本执行失败:', error);
    process.exit(1);
  }
}

if (require.main === module) {
  main();
}

module.exports = { createMenuTables };